#ifndef __MAX7219_H_
#define __MAX7219_H_

#include <stdint.h>

//////////////////字模类型 ：阴码 高位在前 逐行式  ////////////////

typedef enum {
    SIZE_F5x7,
    SIZE_F6X8
} char_size_e;

/***************************
 * 函数名:数据发送函数类型
 * 功能：
 * 参数1：*data 数据指针
 * 参数2：len   指针中的数据长度
 * 返回值：
 * 作者:
 * **************************/
typedef void (*MAX7219_Write_Data_t)(uint8_t *data, uint16_t len);

/***************************
 * 函数名:
 * 功能：初始化max7219
 * 参数1：cb    SPI发送回调函数
 * 返回值：OK = 0; ERR < 0;
 * 作者:
 * **************************/
int max7219Init(MAX7219_Write_Data_t cb);

/***************************
 * 函数名:
 * 功能：刷新显示
 * 返回值：
 * 作者:
 * **************************/
void LedRefresh(void);

/***************************
 * 函数名:
 * 功能：获取显示缓冲区地址
 * 返回值：
 * 作者:
 * **************************/
uint8_t* get_show_buffer();

/***************************
 * 函数名:
 * 功能：清除缓冲区
 * 返回值：
 * 作者:
 * **************************/
void clear_show();

/***************************
 * 函数名:
 * 功能：在指定坐标显示一个字符
 * 参数1:
 * 参数2：
 * 返回值：
 * 作者:
 * **************************/
void write_char_to_buf(uint8_t x, uint8_t y, char c, char_size_e size);

/***************************
 * 函数名:
 * 功能：在指定坐标显示一个字符串
 * 参数1:
 * 参数2：
 * 返回值：
 * 作者:
 * **************************/
void write_str_to_buf(uint8_t x, uint8_t y, char *str, int len, char_size_e size);
#endif
